package com.ruoyi.device.service;

import java.util.List;
import com.ruoyi.device.domain.DeviceInfo;

/**
 * 设备信息Service接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface IDeviceInfoService 
{
    /**
     * 查询设备信息
     * 
     * @param deviceId 设备信息主键
     * @return 设备信息
     */
    public DeviceInfo selectDeviceInfoByDeviceId(String deviceId);

    /**
     * 查询设备信息列表
     * 
     * @param deviceInfo 设备信息
     * @return 设备信息集合
     */
    public List<DeviceInfo> selectDeviceInfoList(DeviceInfo deviceInfo);

    /**
     * 新增设备信息
     * 
     * @param deviceInfo 设备信息
     * @return 结果
     */
    public int insertDeviceInfo(DeviceInfo deviceInfo);

    /**
     * 修改设备信息
     * 
     * @param deviceInfo 设备信息
     * @return 结果
     */
    public int updateDeviceInfo(DeviceInfo deviceInfo);

    /**
     * 批量删除设备信息
     * 
     * @param deviceIds 需要删除的设备信息主键集合
     * @return 结果
     */
    public int deleteDeviceInfoByDeviceIds(String[] deviceIds);

    /**
     * 删除设备信息信息
     * 
     * @param deviceId 设备信息主键
     * @return 结果
     */
    public int deleteDeviceInfoByDeviceId(String deviceId);

    /**
     * 生成WiFi二维码
     * 
     * @param deviceId 设备ID
     * @return 二维码Base64字符串
     */
    public String generateQrCode(String deviceId);

    /**
     * 更新设备心跳时间
     * 
     * @param deviceId 设备ID
     * @return 结果
     */
    public int updateDeviceHeartbeat(String deviceId);

    /**
     * 获取设备统计信息
     * 
     * @return 设备统计信息
     */
    public DeviceStatistics getDeviceStatistics();

    /**
     * 设备统计信息类
     */
    public static class DeviceStatistics {
        private int totalDevices;      // 总设备数
        private int onlineDevices;     // 在线设备数
        private int offlineDevices;    // 离线设备数
        private int faultDevices;      // 故障设备数

        public int getTotalDevices() {
            return totalDevices;
        }

        public void setTotalDevices(int totalDevices) {
            this.totalDevices = totalDevices;
        }

        public int getOnlineDevices() {
            return onlineDevices;
        }

        public void setOnlineDevices(int onlineDevices) {
            this.onlineDevices = onlineDevices;
        }

        public int getOfflineDevices() {
            return offlineDevices;
        }

        public void setOfflineDevices(int offlineDevices) {
            this.offlineDevices = offlineDevices;
        }

        public int getFaultDevices() {
            return faultDevices;
        }

        public void setFaultDevices(int faultDevices) {
            this.faultDevices = faultDevices;
        }
    }
} 